<?php
	function isValidEmail($email) {
		$return = eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email);
		return $return;
	}

  function datediff($interval, $datefrom, $dateto, $using_timestamps = false) {
    /*
    $interval can be:
    yyyy - Number of full years
    q - Number of full quarters
    m - Number of full months
    y - Difference between day numbers
        (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".)
    d - Number of full days
    w - Number of full weekdays
    ww - Number of full weeks
    h - Number of full hours
    n - Number of full minutes
    s - Number of full seconds (default)
    */
    
    if (!$using_timestamps) {
        $datefrom = strtotime($datefrom, 0);
        $dateto = strtotime($dateto, 0);
    }
    $difference = $dateto - $datefrom; // Difference in seconds
    
    switch($interval) {
      case 'yyyy': // Number of full years
        $years_difference = floor($difference / 31536000);
        if (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom)+$years_difference) > $dateto) {
          $years_difference--;
        }
        if (mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto)-($years_difference+1)) > $datefrom) {
          $years_difference++;
        }
        $datediff = $years_difference;
        break;
   
      case "q": // Number of full quarters
        $quarters_difference = floor($difference / 8035200);
        while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($quarters_difference*3), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
          $months_difference++;
        }
        $quarters_difference--;
        $datediff = $quarters_difference;
        break;
   
      case "m": // Number of full months
        $months_difference = floor($difference / 2678400);
        while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
          $months_difference++;
        }
        $months_difference--;
        $datediff = $months_difference;
        break;
   
      case 'y': // Difference between day numbers
        $datediff = date("z", $dateto) - date("z", $datefrom);
        break;
   
      case "d": // Number of full days
        $datediff = floor($difference / 86400);
        break;
   
      case "w": // Number of full weekdays
        $days_difference = floor($difference / 86400);
        $weeks_difference = floor($days_difference / 7); // Complete weeks
        $first_day = date("w", $datefrom);
        $days_remainder = floor($days_difference % 7);
        $odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?
        if ($odd_days > 7) { // Sunday
          $days_remainder--;
        }
        if ($odd_days > 6) { // Saturday
          $days_remainder--;
        }
        $datediff = ($weeks_difference * 5) + $days_remainder;
        break;
   
      case "ww": // Number of full weeks
        $datediff = floor($difference / 604800);
        break;
   
      case "h": // Number of full hours
        $datediff = floor($difference / 3600);
        break;
   
      case "n": // Number of full minutes
        $datediff = floor($difference / 60);
        break;
   
      default: // Number of full seconds (default)
        $datediff = $difference;
        break;
    }    
 
    return $datediff;
  }
  
	function now() {
    $date = getdate();
    $result = $date["year"]."-".$date["mon"]."-".$date["mday"]." ".$date["hours"].":".$date["minutes"].":".$date["seconds"];
    return $result;
  }
  
	function closingTimeFormat($dateClosed) {
    $now = now();
    $dateDiff = datediff("d", $now, $dateClosed);
    $result = "";
    if ($dateDiff > 0) {
      $result = $dateDiff." days";
    } else {
      $hourDiff = dateDiff("h", $now, $dateClosed);
      if ($hourDiff > 0) {
        $result = $hourDiff." hours";
      } else {
        $minDiff = dateDiff("n", $now, $dateClosed);
        if ($minDiff > 0) {
          $result = $minDiff." mins";
        } else {
          $secDiff = dateDiff("s", $now, $dateClosed);
          if ($secDiff > 1) {
            $result = $secDiff." secs";
          } else if ($secDiff > 0) {
            $result = $secDiff." secs";
          }
        }
      }
    }
    if (strlen($result) > 0) $result = "in ".$result; 
    return $result;
  }
  
	function dateTimeFormat($dateClosed) {
    $dateClosed = strtotime($dateClosed);
    $result = date("d M Y  G:ia", $dateClosed);
    return $result;
  }
	
	function listToArray($list, $delimiter) {
		$array = split($delimiter, $list);
		return $array;
	}
	
	function arrayToList($array, $delimiter) {
		$list = "";
		for ($i=0; $i < sizeof($array); $i++) {
			if (strlen($array[$i]) == 0) continue;
			if (strlen($list) > 0) $list = $list.$delimiter;
			$list = $list.$array[$i];
		}
		return $list;
	}
?>
